<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>指令</title>
</head>
<body>
<div id="app">
    <!--    指令 (Directives) 是带有 v- 前缀的特殊 attribute。
    指令 attribute 的值预期是单个 JavaScript 表达式 (v-for 是例外情况，稍后我们再讨论)。
    指令的职责是，当表达式的值改变时，将其产生的连带影响，响应式地作用于 DOM。回顾我们在介绍中看到的例子：-->
    <p v-if="seen">现在你看到我了</p>
    <!--    这里，v-if 指令将根据表达式 seen 的值的真假来插入/移除 <p> 元素。-->

    <!--    参数-->
    <!--    一些指令能够接收一个“参数”，在指令名称之后以冒号表示。例如，v-bind 指令可以用于响应式地更新 HTML attribute：-->
    <a v-bind:href="url">Bing</a>
    <!--    在这里 href 是参数，告知 v-bind 指令将该元素的 href attribute 与表达式 url 的值绑定。-->
    <!--    另一个例子是 v-on 指令，它用于监听 DOM 事件：-->
    <a v-on:click="doSomething"></a>
    <!--    在这里参数是监听的事件名。我们也会更详细地讨论事件处理。-->

    <!--    动态参数-->
    <!--    从 2.6.0 开始，可以用方括号括起来的 JavaScript 表达式作为一个指令的参数：-->
    <!--
    注意，参数表达式的写法存在一些约束，如之后的“对动态参数表达式的约束”章节所述。
    -->
    <!--    <a v-bind:[attributeName]="url"></a>-->
    <!--    这里的 attributeName 会被作为一个 JavaScript 表达式进行动态求值，求得的值将会作为最终的参数来使用。
    例如，如果你的 Vue 实例有一个 data property attributeName，其值为 "href"，
    那么这个绑定将等价于 v-bind:href。-->

    <!--    缩写-->
    <!--    v- 前缀作为一种视觉提示，用来识别模板中 Vue 特定的 attribute。
    当你在使用 Vue.js 为现有标签添加动态行为 (dynamic behavior) 时，
    v- 前缀很有帮助，然而，对于一些频繁用到的指令来说，就会感到使用繁琐。
    同时，在构建由 Vue 管理所有模板的单页面应用程序 (SPA - single page application) 时，
    v- 前缀也变得没那么重要了。因此，Vue 为 v-bind 和 v-on 这两个最常用的指令，提供了特定简写：-->

<!--    v-bind简写-->
    <!-- 完整语法 -->
    <a v-bind:href="url">...</a>

    <!-- 缩写 -->
    <a :href="url">...</a>

    <!-- 动态参数的缩写 (2.6.0+) -->
<!--    <a :[key]="url"> ... </a>-->

<!--    v-on缩写-->
    <!-- 完整语法 -->
    <a v-on:click="doSomething">...</a>

    <!-- 缩写 -->
    <a @click="doSomething">...</a>

    <!-- 动态参数的缩写 (2.6.0+) -->
    <a @[event]="doSomething"> ... </a>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>

    var vm = new Vue({
        el: '#app',
        data: {
            seen: true,
            url: 'https://www.bing.com'
        },
    })
</script>
</body>
</html>